home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / DeskBus.a < prev    next >
Text File  |  1996-05-01  |  4KB  |  148 lines

  1. ;
  2. ;    File:        DeskBus.a
  3. ;
  4. ;    Contains:    Apple Desktop Bus (ADB) Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__DESKBUS__') = 'UNDEFINED' THEN
  19. __DESKBUS__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  25.     include 'MixedMode.a'
  26.     ENDIF
  27.     IF FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE THEN
  28. ; typedef SInt8                         ADBAddress
  29.  
  30. ADBDataBlock            RECORD 0
  31. devType                     ds.b    1                ; offset: $0 (0)        ;  original handler ID 
  32. origADBAddr                 ds.b    1                ; offset: $1 (1)        ;  original ADB Address 
  33. dbServiceRtPtr             ds.l    1                ; offset: $2 (2)        ;  service routine pointer 
  34. dbDataAreaAddr             ds.l    1                ; offset: $6 (6)        ;  this field is passed as the refCon parameter to the service routine 
  35. sizeof                     EQU *                    ; size:   $A (10)
  36.                         ENDR
  37. ; typedef struct ADBDataBlock *            ADBDBlkPtr
  38.  
  39. ADBSetInfoBlock            RECORD 0
  40. siService                 ds.l    1                ; offset: $0 (0)        ;  service routine pointer 
  41. siDataAreaAddr             ds.l    1                ; offset: $4 (4)        ;  this field is passed as the refCon parameter to the service routine 
  42. sizeof                     EQU *                    ; size:   $8 (8)
  43.                         ENDR
  44. ; typedef struct ADBSetInfoBlock *        ADBSInfoPtr
  45.  
  46. ;  ADBOpBlock is only used when calling ADBOp from 68k assembly code 
  47. ADBOpBlock                RECORD 0
  48. dataBuffPtr                 ds.l    1                ; offset: $0 (0)        ;  buffer: pointer to variable length data buffer 
  49. opServiceRtPtr             ds.l    1                ; offset: $4 (4)        ;  completionProc: completion routine pointer 
  50. opDataAreaPtr             ds.l    1                ; offset: $8 (8)        ;  refCon: this field is passed as the refCon parameter to the completion routine 
  51. sizeof                     EQU *                    ; size:   $C (12)
  52.                         ENDR
  53. ; typedef struct ADBOpBlock *            ADBOpBPtr
  54.  
  55. ;
  56. ; pascal void ADBReInit(void )
  57. ;
  58.     IF ¨ GENERATINGCFM THEN
  59.         _ADBReInit:    OPWORD    $A07B
  60.     ELSE
  61.         IMPORT_CFM_FUNCTION ADBReInit
  62.     ENDIF
  63.  
  64. ;
  65. ;    ADBOp has a different interface for 68k assembly than for everything else
  66. ;    for 68k assembly the interface is 
  67. ;    #pragma parameter __D0 ADBOp(__A0,__D0)
  68. ;    OSErr ADBOp( ADBOpBlock * pb, short commandNum );
  69. ;
  70. ;
  71. ;    IMPORTANT NOTE:
  72. ;    "Inside Macintosh: Devices" documents the completion routine for ADBOp will be called with
  73. ;    four parameters using 68k register based calling conventions, specifically the completion routine
  74. ;    passed in should be of type ADBServiceRoutineProcPtr. However, when upp types were first added
  75. ;    to this interface file, the type ADBCompletionUPP was mistakenly used for the second parameter
  76. ;    to ADBOp. Since applications have shipped using completion routines of type ADBCompletionUPP,
  77. ;    the mistake cannot be corrected.
  78. ;    The only difference between ADBServiceRoutineUPP and ADBCompletionUPP is the former takes an extra
  79. ;    argument which is a pointer to itself, fortunately not needed for PowerPC code.
  80. ;    For compatibility with existing 68k code, when an ADBOp completion routine is called,
  81. ;    68k register A1 will point to the completion routine, as documented in Inside Mac.
  82. ;
  83. ;
  84. ; pascal OSErr ADBOp(Ptr refCon, ADBCompletionUPP compRout, Ptr buffer, short commandNum)
  85. ;
  86.     IF ¨ GENERATINGCFM THEN
  87.         _ADBOp:    OPWORD    $A07C
  88.     ELSE
  89.         IMPORT_CFM_FUNCTION ADBOp
  90.     ENDIF
  91.  
  92. ;
  93. ; pascal short CountADBs(void )
  94. ;
  95.     IF ¨ GENERATINGCFM THEN
  96.         ; returns:
  97.         ;    short           <= D0
  98.         _CountADBs:    OPWORD    $A077
  99.     ELSE
  100.         IMPORT_CFM_FUNCTION CountADBs
  101.     ENDIF
  102.  
  103. ;
  104. ; pascal ADBAddress GetIndADB(ADBDataBlock *info, short devTableIndex)
  105. ;
  106.     IF ¨ GENERATINGCFM THEN
  107.         ; parameters:
  108.         ;    info            => A0
  109.         ;    devTableIndex   => D0
  110.         ; returns:
  111.         ;    ADBAddress      <= D0
  112.         _GetIndADB:    OPWORD    $A078
  113.     ELSE
  114.         IMPORT_CFM_FUNCTION GetIndADB
  115.     ENDIF
  116.  
  117. ;
  118. ; pascal OSErr GetADBInfo(ADBDataBlock *info, ADBAddress adbAddr)
  119. ;
  120.     IF ¨ GENERATINGCFM THEN
  121.         ; parameters:
  122.         ;    info            => A0
  123.         ;    adbAddr         => D0
  124.         ; returns:
  125.         ;    OSErr           <= D0
  126.         _GetADBInfo:    OPWORD    $A079
  127.     ELSE
  128.         IMPORT_CFM_FUNCTION GetADBInfo
  129.     ENDIF
  130.  
  131. ;
  132. ; pascal OSErr SetADBInfo(const ADBSetInfoBlock *info, ADBAddress adbAddr)
  133. ;
  134.     IF ¨ GENERATINGCFM THEN
  135.         ; parameters:
  136.         ;    info            => A0
  137.         ;    adbAddr         => D0
  138.         ; returns:
  139.         ;    OSErr           <= D0
  140.         _SetADBInfo:    OPWORD    $A07A
  141.     ELSE
  142.         IMPORT_CFM_FUNCTION SetADBInfo
  143.     ENDIF
  144.  
  145.     ENDIF
  146.     ENDIF ; __DESKBUS__ 
  147.  
  148.